home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / table / JTableHeader.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  7.3 KB  |  263 lines

  1. package javax.swing.table;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Point;
  7. import java.awt.Rectangle;
  8. import java.awt.event.InputEvent;
  9. import java.awt.event.MouseEvent;
  10. import java.io.IOException;
  11. import java.io.ObjectOutputStream;
  12. import java.util.Enumeration;
  13. import javax.accessibility.Accessible;
  14. import javax.accessibility.AccessibleContext;
  15. import javax.swing.JComponent;
  16. import javax.swing.JTable;
  17. import javax.swing.ToolTipManager;
  18. import javax.swing.UIManager;
  19. import javax.swing.event.ChangeEvent;
  20. import javax.swing.event.ListSelectionEvent;
  21. import javax.swing.event.TableColumnModelEvent;
  22. import javax.swing.event.TableColumnModelListener;
  23. import javax.swing.plaf.TableHeaderUI;
  24.  
  25. public class JTableHeader extends JComponent implements TableColumnModelListener, Accessible {
  26.    private static final String uiClassID = "TableHeaderUI";
  27.    protected JTable table;
  28.    protected TableColumnModel columnModel;
  29.    protected boolean reorderingAllowed;
  30.    protected boolean resizingAllowed;
  31.    protected boolean updateTableInRealTime;
  32.    protected transient TableColumn resizingColumn;
  33.    protected transient TableColumn draggedColumn;
  34.    protected transient int draggedDistance;
  35.  
  36.    public JTableHeader() {
  37.       this((TableColumnModel)null);
  38.    }
  39.  
  40.    public JTableHeader(TableColumnModel var1) {
  41.       if (var1 == null) {
  42.          var1 = this.createDefaultColumnModel();
  43.       }
  44.  
  45.       this.setColumnModel(var1);
  46.       this.initializeLocalVars();
  47.       this.updateUI();
  48.    }
  49.  
  50.    public void columnAdded(TableColumnModelEvent var1) {
  51.       this.resizeAndRepaint();
  52.    }
  53.  
  54.    public int columnAtPoint(Point var1) {
  55.       return this.getColumnModel().getColumnIndexAtX(var1.x);
  56.    }
  57.  
  58.    public void columnMarginChanged(ChangeEvent var1) {
  59.       this.resizeAndRepaint();
  60.    }
  61.  
  62.    public void columnMoved(TableColumnModelEvent var1) {
  63.       ((Component)this).repaint();
  64.    }
  65.  
  66.    public void columnRemoved(TableColumnModelEvent var1) {
  67.       this.resizeAndRepaint();
  68.    }
  69.  
  70.    public void columnSelectionChanged(ListSelectionEvent var1) {
  71.    }
  72.  
  73.    protected TableColumnModel createDefaultColumnModel() {
  74.       return new DefaultTableColumnModel();
  75.    }
  76.  
  77.    public AccessibleContext getAccessibleContext() {
  78.       if (super.accessibleContext == null) {
  79.          super.accessibleContext = new AccessibleJTableHeader(this);
  80.       }
  81.  
  82.       return super.accessibleContext;
  83.    }
  84.  
  85.    public TableColumnModel getColumnModel() {
  86.       return this.columnModel;
  87.    }
  88.  
  89.    public TableColumn getDraggedColumn() {
  90.       return this.draggedColumn;
  91.    }
  92.  
  93.    public int getDraggedDistance() {
  94.       return this.draggedDistance;
  95.    }
  96.  
  97.    public Rectangle getHeaderRect(int var1) {
  98.       TableColumnModel var2 = this.getColumnModel();
  99.       if (var1 >= 0 && var1 < var2.getColumnCount()) {
  100.          int var3 = 0;
  101.          int var4 = 0;
  102.          int var5 = this.getColumnModel().getColumnMargin();
  103.  
  104.          for(Enumeration var6 = this.getColumnModel().getColumns(); var6.hasMoreElements(); ++var4) {
  105.             TableColumn var7 = (TableColumn)var6.nextElement();
  106.             if (var4 == var1) {
  107.                return new Rectangle(var3, 0, var7.getWidth() + var5, ((Component)this).getSize().height);
  108.             }
  109.  
  110.             var3 += var7.getWidth() + var5;
  111.          }
  112.  
  113.          return new Rectangle();
  114.       } else {
  115.          throw new IllegalArgumentException("Column index out of range");
  116.       }
  117.    }
  118.  
  119.    public boolean getReorderingAllowed() {
  120.       return this.reorderingAllowed;
  121.    }
  122.  
  123.    public boolean getResizingAllowed() {
  124.       return this.resizingAllowed;
  125.    }
  126.  
  127.    public TableColumn getResizingColumn() {
  128.       return this.resizingColumn;
  129.    }
  130.  
  131.    public JTable getTable() {
  132.       return this.table;
  133.    }
  134.  
  135.    public String getToolTipText(MouseEvent var1) {
  136.       String var2 = null;
  137.       Point var3 = var1.getPoint();
  138.       int var4;
  139.       if ((var4 = this.columnModel.getColumnIndexAtX(var3.x)) != -1) {
  140.          TableColumn var5 = this.columnModel.getColumn(var4);
  141.          TableCellRenderer var6 = var5.getHeaderRenderer();
  142.          Component var7 = var6.getTableCellRendererComponent(this.getTable(), var5.getHeaderValue(), false, false, -1, var4);
  143.          if (var7 instanceof JComponent) {
  144.             Rectangle var9 = this.getHeaderRect(var4);
  145.             var3.translate(-var9.x, -var9.y);
  146.             MouseEvent var8 = new MouseEvent(var7, ((AWTEvent)var1).getID(), ((InputEvent)var1).getWhen(), ((InputEvent)var1).getModifiers(), var3.x, var3.y, var1.getClickCount(), var1.isPopupTrigger());
  147.             var2 = ((JComponent)var7).getToolTipText(var8);
  148.          }
  149.       }
  150.  
  151.       if (var2 == null) {
  152.          var2 = ((JComponent)this).getToolTipText();
  153.       }
  154.  
  155.       return var2;
  156.    }
  157.  
  158.    public TableHeaderUI getUI() {
  159.       return (TableHeaderUI)super.ui;
  160.    }
  161.  
  162.    public String getUIClassID() {
  163.       return "TableHeaderUI";
  164.    }
  165.  
  166.    public boolean getUpdateTableInRealTime() {
  167.       return this.updateTableInRealTime;
  168.    }
  169.  
  170.    protected void initializeLocalVars() {
  171.       ((JComponent)this).setOpaque(true);
  172.       this.table = null;
  173.       this.reorderingAllowed = true;
  174.       this.resizingAllowed = true;
  175.       this.draggedColumn = null;
  176.       this.draggedDistance = 0;
  177.       this.resizingColumn = null;
  178.       this.updateTableInRealTime = true;
  179.       ToolTipManager var1 = ToolTipManager.sharedInstance();
  180.       var1.registerComponent(this);
  181.    }
  182.  
  183.    protected String paramString() {
  184.       String var1 = this.reorderingAllowed ? "true" : "false";
  185.       String var2 = this.resizingAllowed ? "true" : "false";
  186.       String var3 = this.updateTableInRealTime ? "true" : "false";
  187.       return super.paramString() + ",draggedDistance=" + this.draggedDistance + ",reorderingAllowed=" + var1 + ",resizingAllowed=" + var2 + ",updateTableInRealTime=" + var3;
  188.    }
  189.  
  190.    public void resizeAndRepaint() {
  191.       ((JComponent)this).revalidate();
  192.       ((Component)this).repaint();
  193.    }
  194.  
  195.    public void setColumnModel(TableColumnModel var1) {
  196.       if (var1 == null) {
  197.          throw new IllegalArgumentException("Cannot set a null ColumnModel");
  198.       } else {
  199.          TableColumnModel var2 = this.columnModel;
  200.          if (var1 != var2) {
  201.             if (var2 != null) {
  202.                var2.removeColumnModelListener(this);
  203.             }
  204.  
  205.             this.columnModel = var1;
  206.             var1.addColumnModelListener(this);
  207.             this.resizeAndRepaint();
  208.          }
  209.  
  210.       }
  211.    }
  212.  
  213.    public void setDraggedColumn(TableColumn var1) {
  214.       this.draggedColumn = var1;
  215.    }
  216.  
  217.    public void setDraggedDistance(int var1) {
  218.       this.draggedDistance = var1;
  219.    }
  220.  
  221.    public void setReorderingAllowed(boolean var1) {
  222.       this.reorderingAllowed = var1;
  223.    }
  224.  
  225.    public void setResizingAllowed(boolean var1) {
  226.       this.resizingAllowed = var1;
  227.    }
  228.  
  229.    public void setResizingColumn(TableColumn var1) {
  230.       this.resizingColumn = var1;
  231.    }
  232.  
  233.    public void setTable(JTable var1) {
  234.       this.table = var1;
  235.    }
  236.  
  237.    public void setUI(TableHeaderUI var1) {
  238.       if (super.ui != var1) {
  239.          super.setUI(var1);
  240.          ((Component)this).repaint();
  241.       }
  242.  
  243.    }
  244.  
  245.    public void setUpdateTableInRealTime(boolean var1) {
  246.       this.updateTableInRealTime = var1;
  247.    }
  248.  
  249.    public void updateUI() {
  250.       this.setUI((TableHeaderUI)UIManager.getUI(this));
  251.       this.resizeAndRepaint();
  252.       ((Container)this).invalidate();
  253.    }
  254.  
  255.    private void writeObject(ObjectOutputStream var1) throws IOException {
  256.       var1.defaultWriteObject();
  257.       if (super.ui != null && this.getUIClassID().equals("TableHeaderUI")) {
  258.          super.ui.installUI(this);
  259.       }
  260.  
  261.    }
  262. }
  263.